<script>
export default {
  computed: {
    currentUser() {
      return this.$store.state.user.currentUser
    },
    currentSystemRoles(){
      return this.$store.state.role.userSystemRoles
    }
  },
  created() {
    // 获取用户信息，注意由于mixins是可能混入多个组件的，也就是如果多处注册
    // 每个组件挂载时都会调用dispatch。好在下面的action里如果发现currentUser有的话，就直接返回
    // 希望vuex的actions也是成队列的，不然会多次请求后台获取
    this.$store.dispatch('user/getUserInfo').then(() => {})
    this.$store.dispatch('role/getUserSystemRoles').then(() => {})

    // 假如access_token发生了改变，就要重新设置当前用户信息
    this.$store.subscribe((mutation, state) => {
      if (mutation.type === 'auth/AUTH_UPDATE_TOKEN') {
        this.$store.dispatch('user/getUserInfo', true)
        this.$store.dispatch('role/getUserSystemRoles', true)
      }
    })
  }
}
</script>
